/**
 * 文章相关API接口
 */
import {get, post, put, del, upload } from '../utils/request'
import { API_BASE_URL, API_PREFIX } from './config'

/**
 * 保存文章（新增）
 * @param {number} userId - 用户ID
 * @param {string} title - 文章标题
 * @param {string} content - 文章内容
 * @returns {Promise<Object>} 返回保存结果
 */
export const saveDraftToWechat = (userId, title, content) => {
    return post(`${API_BASE_URL}${API_PREFIX.USER}/article/save`, { userId, title, content })
}

/**
 * 修改文章
 * @param {number} id - 文章ID
 * @param {number} userId - 用户ID
 * @param {string} title - 文章标题
 * @param {string} content - 文章内容
 * @returns {Promise<Object>} 返回修改结果
 */
export const updateArticle = (id, userId, title, content) => {
    return put(`${API_BASE_URL}${API_PREFIX.USER}/article/save`, { id, userId, title, content })
}

/**
 * 分页查询我的文章
 * @param {number} current - 当前页码，默认为1
 * @param {number} size - 每页数量，默认为10
 * @param {number} status - 文章状态（可选）
 * @param {string|number} userId - 用户ID（必传）
 * @returns {Promise<Object>} 返回分页数据
 */
export const getMyArticles = (current = 1, size = 10, status = null, userId) => {
    const params = {
        current,
        size,
        userId
    }

    // 如果status不为null，添加到参数中
    if (status !== null && status !== undefined) {
        params.status = status
    }

    return get(`${API_BASE_URL}${API_PREFIX.USER}/article/page`, params)
}

/**
 * 删除文章
 * @param {number|string} id - 文章ID
 * @returns {Promise<Object>} 返回删除结果
 */
export const deleteArticle = (id) => {
    return del(`${API_BASE_URL}${API_PREFIX.USER}/article/deleteArticle/${id}`)
}

/**
 * 提交文章审核
 * @param {number|string} id - 文章ID
 * @returns {Promise<Object>} 返回审核结果
 */
export const checkArticle = (id) => {
    return get(`${API_BASE_URL}${API_PREFIX.USER}/article/check/${id}`)
}

/**
 * 撤回审核
 * @param {number|string} id - 文章ID
 * @returns {Promise<Object>} 返回撤回结果
 */
export const returnCheck = (id) => {
    return get(`${API_BASE_URL}${API_PREFIX.USER}/article/returnCheck/${id}`)
}

/**
 * 上传图片到微信服务器
 * @param {File} file - 图片文件
 * @param {string} accessToken - 微信access_token
 * @returns {Promise<Object>} 返回上传结果（包含url等信息）
 */
export const uploadImage = (file, accessToken) => {
    const formData = new FormData()
    formData.append('media', file)

    const uploadUrl = `${API_BASE_URL}${API_PREFIX.WECHAT}/wechat/media/upload?type=image&access_token=${accessToken}`
    return upload(uploadUrl, formData)
}

/**
 * 获取文章审核记录
 * @param {number|string} articleId - 文章ID
 * @returns {Promise<Object>} 返回审核记录
 */
export const getReviewRecords = (articleId) => {
    return get(`${API_BASE_URL}${API_PREFIX.USER}/article/review/records/${articleId}`)
}

/**
 * 获取用户绑定的公众号账号列表
 * @param {number|string} userId - 用户ID
 * @returns {Promise<Object>} 返回绑定账号列表
 */
export const getUserBindAccount = (userId) => {
    return get(`${API_BASE_URL}${API_PREFIX.USER}/article/getUserBindAccount/${userId}`)
}